#!/usr/bin/env python3
# -*- coding:utf-8 -*_

# http://pyqt.sourceforge.net/Docs/PyQt5/ 文档
#http://code.py40.com/pyqt5/
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QToolTip,QPushButton,QMessageBox,QDesktopWidget
from PyQt5.QtGui import QIcon,QFont
from PyQt5.QtCore import QCoreApplication

class MainWin(QWidget):
    def __init__(self,sizeW=300,sizeH=300,title="myWin"):
        super().__init__()
        self.sizeW = sizeW
        self.sizeH = sizeH
        self.title = title
        self.initUI()

    def initUI(self):

        QToolTip.setFont(QFont('SansSerif',10)) #设置tooltip的字体信息
        
        self.resize(self.sizeW,self.sizeH)
        self.move(300,300)
        self.setWindowTitle(self.title)
        self.setWindowIcon(QIcon('assets/ico/logo.png')) #设置一个图标(窗口左上角)
        #self.show()
        btn = QPushButton('退出',self) #创建一个按钮 父级为本身
        btn.clicked.connect(self.clickBtn) #注册点击事件
        btn.setToolTip("点击我试试看吧<font color='#ff0000' >红色内容</font>")
        btn.resize(btn.sizeHint()) #设置成默认尺寸
        btn.move(self.width()-btn.width() >>1 ,self.height()-btn.height())
        self.center()

    #重新父类的关闭事件处理函数
    def closeEvent(self,event):
        '''
        点击窗口右上角X按钮会触发该函数
        '''
        #pyqt的应答询问框
        reply = QMessageBox.question(self,"系统消息",
        "你真的想退出吗？",
        QMessageBox.Yes|QMessageBox.No,QMessageBox.No) #最后一个参数设置默认的按钮焦点

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

    def clickBtn(self,*arg):
        print("点击按钮了....",arg)
        #QCoreApplication 核心类是单例
        QCoreApplication.instance().quit() #退出App

    def center(self):
        qr = self.frameGeometry() #获取窗口的矩形区域
        print('qr=',qr)
        #获取电脑屏幕中心点,QDesktopWidget 提供了用户的桌面信息
        cp = QDesktopWidget().availableGeometry().center()
        print('cp=',cp)

        #显示到屏幕中心
        qr.moveCenter(cp) #矩形区域移动到屏幕中心
        self.move(qr.topLeft())#设置窗口坐标点




if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWin(300,300,'第一个QT窗口')
    w.show()
    sys.exit(app.exec_())